package manager.controller;

import manager.domain.RouteInfo;
import manager.service.CardService;
import manager.service.RouteService;

import java.util.Scanner;

public class RouteController {
    private CardService cardService =new CardService();
    private Scanner sc = new Scanner(System.in);
    RouteService routeService = new RouteService();
    //    开启地铁乘坐系统，展示菜单
    public void start() {
//        Scanner sc = new Scanner(System.in);//放在开头
        l:
        while (true){
            System.out.println("欢迎乘坐北京地铁!");
            System.out.println("1：查看路线站点列表");
            System.out.println("2：购票乘车");
            System.out.println("3：返回上一层");
            System.out.print("请输入要选择的操作（1~3）：");
            lo:
            while (true) {
                String choice = sc.next();
                lo1:
                switch (choice) {
                    case "1":
                        findAllRoutes();
                        break lo;
                    case "2":
                        buyTickets();
                        break lo;
                    case "3":
                        System.out.println("返回上一层，成功！");
//                        退出当前正在运行的JVM虚拟机
                        break l;
                    default:
                        System.out.print("您的输入有误，请重新输入。");
                        break lo1;
                }
            }
        }
    }

    private void buyTickets() {
        //需要修改，输入起始站和终点站，并给出票价，进行完整购买
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请输入起始站,或者输入EXIT退出：");
            String start = sc.next();
            if (start.equals("EXIT")){
                break;
            }
            System.out.println("请输入终点站,或者输入EXIT退出：");
            String end = sc.next();
            if (end.equals("EXIT")){
                break;
            }
//            累计经过了多少站
            int[] buyinfomation = routeService.buyTickets(start,end);
            int price = buyinfomation[0];
            if (price == 0){
                System.out.println("您的输入有误，请重新输入!或者输入EXIT退出");
            }else {
                System.out.println("购买成功，共需花费："+price+"元。");
//                CardController对象的方法buyTickets：传入price
                if (buyinfomation[1] == 1){
                    System.out.println("请在西单进行转线");
                }
//            CardController对象的方法：判断卡号，无卡号则注册addCard，扣卡存在余额不足则退出，下面break要注意
                break;
            }

        }

    }


    public void findAllRoutes() {
        //请选择所查看的线路
//        输入0查看所有站点
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请输入查看的线路(输入线路数字即可)：");
            int route = sc.nextInt();
            RouteInfo[] routeInfos = routeService.findAllRoute(route);
            if (routeInfos != null){
                for (int i = 0; i < routeInfos.length; i++) {
                    RouteInfo routeInfo = routeInfos[i];
                    System.out.print(routeInfo.getName()+"-->");
//                    最后一个站点后不要"-->"
                }
                break;
            }else if(routeInfos == null){
                System.out.println("您的输入有误，请重新选择线路！");
            }
        }


//        需要修改，增加展示所有路线的功能，并可以继续输入路线号来单独查看
//        CardInfo[] cardInfos =studentService.findAllStudent();
////        判断数组是否为空
//        if(cardInfos ==null){
//            System.out.println("查无信息，请添加后重试。");
//            return;
//        }
////        遍历数组打印学生信息
//        System.out.println("学号\t\t姓名\t年龄\t\t生日");
//        for (int i = 0; i < cardInfos.length; i++) {
//            CardInfo cardInfo = cardInfos[i];
//            if(cardInfo !=null){
//                System.out.println(cardInfo.getId()+"\t\t"+ cardInfo.getName()+"\t"+ cardInfo.getAge()+"\t\t");
//            }
//        }
    }

    //    录入站点ID，可以用来查询站点是否存在
    public String inputStudentId(){
        String Id=null;
        l:
        while (true){
            System.out.println("请输入学生的ID：");
            Id=sc.next();
//            判断ID是否存在
            l1:
            while (true){
                boolean exists = cardService.isExists(Id);
                if(!exists){//exists为负,则执行
                    System.out.println("ID不存在，退出请输入0，不退出请重新输入ID：");
                    int exit;
                    exit=sc.nextInt();
                    if(exit==0){
                        Id=null;
                        System.out.println("退出成功！");
                        break l;
                    }else {
                        Id= String.valueOf(exit);
                    }
                }else {
                    break l;
                }
            }
        }
        return Id;
    }

}